package net.qiqbframework.modelling.domain;

import net.qiqbframework.description.NamedModel;

import java.lang.reflect.Member;

public interface BizIdentifierModel<T> extends NamedModel {

    Class<? extends T> bizIdentifierType();

    Member getMember();

    /**
     * 获取业务ID实际值
     *
     * @param aggregate 是聚合根本身或者是聚合对象
     * @return 业务ID值
     */
    T bizIdentifier(Object aggregate);

    /**
     *
     *
     * @return 返回业务ID模型所属的聚合模型
     */
    EntityModel<?> entityModel();



}
